package fiuba.algo3.mundo;

import fiuba.algo3.XMLProcessor.nucleo.Nodo;
import fiuba.algo3.XMLProcessor.nucleo.NodoXML;
import fiuba.algo3.persistencia.ConstructorPosicion;
import fiuba.algo3.persistencia.XMLConstruible;

public class Posicion implements XMLConstruible
{
	private final float x;
	private final float y;

	public Posicion(float x, float y)
	{
		this.x = x;
		this.y = y;
	}

	private float convertir(float x)
	{
		return (float)Math.toRadians(x)*6400;
	}

	private float pitagoras(float x, float y)
	{
		return (float) Math.sqrt(x*x + y*y);
	}

	public float calcularDistancia(float x, float y)
	{
		return pitagoras(convertir(x - this.x), convertir(y - this.y));
	}

	public float calcularDistancia(Posicion posicion)
	{
		return posicion.calcularDistancia(this.x, this.y);
	}

	public Posicion construir(NodoXML nodo)
	{
		return ConstructorPosicion.construir(nodo);
	}

	public NodoXML nodalizar()
	{
		NodoXML nodoRaiz = new Nodo("objeto");
//		nodoRaiz.agregarAtributo("clase", "Posicion");
//		nodoRaiz.agregarNodo(FabricaDeNodos.nuevoNodoCampoPrimitivo("x", (Object)(Float)this.x));
//		nodoRaiz.agregarNodo(FabricaDeNodos.nuevoNodoCampoPrimitivo("y", (Object)(Float)this.y));
		return nodoRaiz;
	}
}
